package com.cj.service.impl;

import com.cj.dao.AdminDao;  // 导入AdminDao接口
import com.cj.po.Admin;  // 导入Admin实体类
import com.cj.po.PageInfo;  // 导入PageInfo类
import com.cj.service.AdminService;  // 导入AdminService接口
import com.cj.util.MD5Util;  // 导入MD5工具类
import org.springframework.beans.factory.annotation.Autowired;  // 导入自动注入注解
import org.springframework.stereotype.Service;  // 导入服务注解
import org.springframework.transaction.annotation.Transactional;  // 导入事务注解

import java.util.List;

/**
 * 用户Service接口实现类，用于处理管理员相关业务逻辑
 */
@Service("adminService")  // 声明这是一个Spring服务组件
@Transactional  // 声明该类中的方法需要事务管理
public class AdminServiceImpl implements AdminService {

	// 注入AdminDao接口实例，用于数据访问
	@Autowired
	private AdminDao adminDao;

	// 管理登录查询，根据传入的管理员对象查询相应的管理员信息
	@Override
	public Admin findAdmin(Admin admin) {
		// 调用Dao层方法查询管理员信息
		Admin a = adminDao.findAdmin(admin);
		return a;  // 返回查询结果
	}

	// 获取所有管理员信息
	@Override
	public List<Admin> getAll() {
		// 调用Dao层方法获取所有管理员列表
		List<Admin> adminList = adminDao.getAll();
		return adminList;  // 返回管理员列表
	}

	// 根据条件查询分页管理员信息
	@Override
	public PageInfo<Admin> findPageInfo(String a_username, String a_describe, Integer a_id, Integer pageIndex, Integer pageSize) {
		PageInfo<Admin> pi = new PageInfo<Admin>();  // 创建分页信息对象
		pi.setPageIndex(pageIndex);  // 设置当前页码
		pi.setPageSize(pageSize);  // 设置每页显示条数

		// 获取符合条件的管理员总数量
		Integer totalCount = adminDao.totalCount(a_username, a_describe, a_id);
		if (totalCount > 0) {  // 如果有结果
			pi.setTotalCount(totalCount);  // 设置总记录数
			// 计算当前页开始的位置
			List<Admin> adminList = adminDao.getAdminList(a_username, a_describe, a_id,
					(pi.getPageIndex() - 1) * pi.getPageSize(), pi.getPageSize());
			pi.setList(adminList);  // 设置当前页的管理员列表
		}
		return pi;  // 返回分页信息对象
	}

	// 添加管理员信息
	@Override
	public int addAdmin(Admin admin) {
		// 调用Dao层方法进行添加操作
		return adminDao.addAdmin(admin);
	}

	// 通过ID删除管理员信息
	@Override
	public int deleteAdmin(Integer a_id) {
		// 调用Dao层方法进行删除操作
		return adminDao.deleteAdmin(a_id);
	}

	// 修改管理员信息
	@Override
	public int updateAdmin(Admin admin) {
		// 调用Dao层方法进行更新操作
		return adminDao.updateAdmin(admin);
	}

	// 根据ID查询管理员信息
	@Override
	public Admin findAdminById(Integer a_id) {
		// 调用Dao层方法根据ID查询管理员
		Admin a = adminDao.findAdminById(a_id);
		return a;  // 返回查询结果
	}
}
